// src/main/java/com/yourpackage/service/OssService.java
package com.reliable.service.oss.service;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.List;

/**
 * OSS 服务接口
 */
public interface OssService {

    /**
     * 上传文件到 OSS
     * @param file MultipartFile 文件对象
     * @return 文件在 OSS 上的完整访问 URL
     * @throws IOException 上传失败时抛出
     */
    String uploadFile(MultipartFile file) throws IOException;

    /**
     * 上传 Base64 编码的图片到 OSS
     * @param base64Data Base64 字符串 (支持 data:image/...;base64, 前缀)
     * @return 文件在 OSS 上的完整访问 URL
     * @throws IOException 上传失败时抛出
     */
    String uploadBase64Image(String base64Data) throws IOException;

    /**
     * 批量删除 OSS 上的文件
     * @param objectNames 文件在 OSS 中的完整路径列表 (如: "uploads/123.jpg")
     */
    void deleteFiles(List<String> objectNames);

    /**
     * 生成一个临时的、带签名的 URL，用于安全地访问私有文件
     * @param objectName 文件在 OSS 中的路径
     * @param expiration 过期时间 (毫秒)，例如 30 * 60 * 1000 (30分钟)
     * @return 签名 URL
     */
    String generatePresignedUrl(String objectName, long expiration);


    String uploadFile(File file) throws IOException;
}